home *** CD-ROM | disk | FTP | other *** search
- /*
- fexampl.c: example of how to use custom font on PalmOS v3.0 or higher.
- (c) 1999 Alexander Ovcharenko
- */
-
- #pragma pack(2)
-
- #include <Common.h>
- #include <System/SysAll.h>
- #include <System/SysEvtMgr.h>
- #include <UI/UIAll.h>
- #include "fexampl.h"
-
- static int StartApplication( void );
- static int StopApplication( void );
- static Word EventLoop( void );
- static Boolean AboutHandler( EventPtr );
- static Boolean FExamplHandler( EventPtr );
-
- static VoidHand FontHandle0, FontHandle1, FontHandle2, FontHandle3;
-
- DWord PilotMain (Word cmd, Ptr cmdPBP, Word launchFlags)
- {
- int error;
- ULong version;
-
- if (cmd == sysAppLaunchCmdNormalLaunch)
- {
-
- version=0;
- FtrGet(sysFtrCreator,sysFtrNumROMVersion,&version);
-
- if(version<0x03000000l)
- FrmAlert(AlertID_LowVersion);
- else
- {
- error = StartApplication(); // Application start code
- .
- if (error) return error;
- EventLoop(); // Event loop
- .
- StopApplication(); // Application stop code
- .
- }
- }
- return 0;
- }
-
-
- static int StartApplication( void )
- {
- /* 'pFNT' and 0x03e8 are font resourse name and font ID value. */
-
- FontHandle0=DmGetResource('pFNT',0x03e8);
- FontHandle1=DmGetResource('pFNT',0x03e9);
- FontHandle2=DmGetResource('pFNT',0x03ea);
-
- /* Now we define ID for memory block of custom font.
- Font ID should be greater than 128 because value less than 128 are
- reserved for system use. */
-
- if (FontHandle0!=NULL) FntDefineFont(Font_Nufont,MemHandleLock(FontHandle0));
- if (FontHandle1!=NULL) FntDefineFont(Font_Times,MemHandleLock(FontHandle1));
- if (FontHandle2!=NULL) FntDefineFont(Font_Narrowed,MemHandleLock(FontHandle2));
-
- FrmGotoForm(FormID_FExample);
- return 0;
- }
-
- static int StopApplication(void)
- {
- FrmCloseAllForms();
-
- /* Unlock and release custom font resources */
-
- MemHandleUnlock( FontHandle0 );
- MemHandleUnlock( FontHandle1 );
- MemHandleUnlock( FontHandle2 );
-
- DmReleaseResource( FontHandle0 );
- DmReleaseResource( FontHandle1 );
- DmReleaseResource( FontHandle2 );
- return 0;
- };
-
- static Word EventLoop( void )
- {
- EventType event;
- FormPtr CurrentForm;
- Word FormID;
- Word error;
-
- do
- {
- EvtGetEvent(&event,600);
-
- if (SysHandleEvent(&event)) continue;
- if (MenuHandleEvent((void *)0, &event, &error)) continue;
-
- if (event.eType == frmLoadEvent)
- {
- FormID=event.data.frmLoad.formID;
- CurrentForm=FrmInitForm(FormID);
- FrmSetActiveForm(CurrentForm);
-
- switch (FormID)
- {
- case FormID_FExample:
- FrmSetEventHandler(CurrentForm,FExamplHandler);
- break;
-
- case FormID_About:
- FrmSetEventHandler(CurrentForm,AboutHandler);
- break;
- };
- };
- FrmDispatchEvent(&event);
- } while (event.eType != appStopEvent);
-
- return 0;
- }
-
- static Boolean FExamplHandler( EventPtr event)
- {
- Boolean Handled=false;
- FormPtr CurrentForm;
- CurrentForm=FrmGetActiveForm();
- Handled=false;
-
- switch (event->eType)
- {
- case frmOpenEvent: /* Draw all objects of the active form. */
- FrmDrawForm(CurrentForm);
- Handled=true;
- break;
-
- case menuEvent:
- Handled=true;
- switch ( event->data.menu.itemID)
- {
- case MenuID_About:
- FrmPopupForm(FormID_About);
- break;
-
- default:
- Handled=false;
- break;
- };
- break;
-
- case ctlSelectEvent:
- switch ( event->data.ctlEnter.controlID )
- {
- };
- break;
-
- case frmCloseEvent:
- FrmEraseForm(FrmGetActiveForm());
- FrmDeleteForm(FrmGetActiveForm());
- Handled=true;
- break;
-
- default:
- Handled=false;
- break;
- }
- return (Handled);
- }
-
- static Boolean AboutHandler( EventPtr event)
- { Boolean Handled=false;
-
- Handled=false;
- switch (event->eType)
- { case frmOpenEvent: /* Draw all objects of the active form. */
- FrmDrawForm(FrmGetActiveForm());
- Handled=true;
- break;
-
- case ctlSelectEvent:
- switch ( event->data.ctlEnter.controlID)
- {
- case ButtonID_AboutOk:
- FrmReturnToForm(FormID_FExample);
- Handled=true;
- break;
- };
- break;
-
- case frmCloseEvent:
- FrmEraseForm(FrmGetActiveForm());
- FrmDeleteForm(FrmGetActiveForm());
- Handled=true;
- break;
-
- default:
- Handled=false;
- break;
- };
-
- return (Handled);
- };
-